blob: c25c10ac51289f29d154261e1f6553b0b7eda7f9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
import { NextApiRequest, NextApiResponse } from "next";
import { SolrResponse } from "~/types/solr";
const SOLR_HOST = process.env.SOLR_HOST as string
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
const variantId = req.query.id as string
let price_tier = 'tier1'
let auth = req.cookies.auth ? JSON.parse(req.cookies.auth) : null
if (auth?.pricelist) price_tier = auth.pricelist
if (req.method === 'GET') {
const queryParams = new URLSearchParams({ q: `id:${variantId}` })
const response = await fetch(`${SOLR_HOST}/solr/variants/select?${queryParams.toString()}`)
const data: SolrResponse<any[]> = await response.json()
if (data.response.numFound === 0) {
res.status(404).json({ error: 'Variant not found' })
return
}
const variant = await map(data.response.docs[0], price_tier)
res.status(200).json({ data: variant })
}
}
const map = async (variant: any, price_tier: string) => {
const data: any = {}
data.id = parseInt(variant.id)
data.parent_id = variant.template_id_i
data.display_name = variant.display_name_s
data.image = variant.image_s
data.name = variant.name_s
data.default_code = variant.default_code_s
data.price = {
price: variant.price_v2_f,
discount_percentage: variant[`discount_${price_tier}_v2_f`] || 0,
price_discount: variant[`price_${price_tier}_v2_f`] || 0,
}
return data
}
|